home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagn_r.zip / REDIRECT.SWG / 0006_Redirection.pas < prev    next >
Pascal/Delphi Source File  |  1994-01-27  |  2KB  |  65 lines

  1. {
  2. Here's a neat little ditty I converted from a C++ tip I saw in a mag a few
  3. years ago.  It tests to see if its own output has been redirected and
  4. returns a 1 if TRUE (redirected) or a 0 if FALSE (not redirected). This
  5. function includes a sample prog that demonstrates its use. SIDE NOTE: I
  6. put this function in the U_FILE.pas.tpu for use with all of my home-grown
  7. file related functions and procedures.
  8.  
  9. TEST WITH: Test_Red (enter)
  10.    [you should see a NOT REDIRECTED msg, 10 lines and a FINISHED msg.]
  11.  
  12. TEST WITH: Test_Red > this.dat (enter)
  13.    [you should see a REDIRECTED msg, (no lines) and a FINISHED msg
  14.     and the output of the lines will be in the this.dat file]
  15. }
  16.  
  17. program test_red;
  18.  
  19. {$A+,B-,D-,E-,F-,G-,I+,L-,N-,O-,P-,Q-,R-,S+,T-,V+,X-}
  20. {$M 1024,0,655360}
  21.  
  22. {*******************************************************************!HDR**
  23. ** Function Name: fn_bRedirected()
  24. ** Description  : Determines if output has been redirected;
  25. ** Returns      : Integer to be treated as boolean;
  26. ** Calls        :
  27. ** Special considerations:
  28. ** Modification history:
  29. ** Created: 11/03/93 20:23
  30. *********************************************************************!END}
  31.  
  32. function fn_bRedirected : Integer; Assembler; {Treated as BOOLEAN}
  33. asm
  34.   push  ds
  35.   mov   ax,      prefixseg
  36.   mov   ds,      ax
  37.   xor   bx,      bx
  38.   les   bx,      [bx + $34]
  39.   mov   al,      es:[bx]
  40.   mov   ah,      es:[bx +1]
  41.   pop   ds
  42.   cmp   al,      ah
  43.   mov   ax,      1
  44.   jne   @_exit
  45.   xor   ax,      ax
  46.  @_exit:
  47.   {mov   @Result, AX}
  48. end;
  49.  
  50. var
  51.   Count    : Byte;
  52.   hOutFile : text;
  53.  
  54. begin
  55.   Assign(hOutFile, 'CON');
  56.   ReWrite(hOutFile);
  57.   if not (boolean(fn_bRedirected)) then
  58.     writeln(hOutFile, 'Not Redirected')
  59.   else
  60.     writeln(hOutFile, 'Please wait while redirection is in progress');
  61.   for Count := 1 to 10 do
  62.     writeln('Line ', Count : 2);
  63.   writeln(hOutFile, 'Finished!');
  64. end.
  65.